package net.biancheng.controller;

import net.biancheng.bean.User;
import net.biancheng.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

/**
 * @Author: lb
 * @Date: 2021/8/18 16:24
 * 用户信息管理controller
 * @Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。
 * 在方法上加@ResponseBody注解，也可以返回实体对象。
 *
 * @RestController是@Controller和@ResponseBody的结合体，两个标注合并起来的作用。
 * @RestController类中的所有方法只能返回String、Object、Json等实体对象，不能跳转到模版页面。
 */
@Controller
@RequestMapping("/hello")
public class UserController {

    private static final Logger log = LoggerFactory.getLogger(UserController.class);

    @Autowired
    private UserService userService;

    /**
     * jsp页面用户登录接口
     * @param user
     * @param map
     * @param session
     * @return
     */
    @RequestMapping("/login")
    public String doLogin(User user, Map<String, Object> map, HttpSession session) {
        List<User> userList = userService.selectUserList(user);
        if (userList.size() > 0 && userList.get(0).getUserName().equals(user.getUserName()) && userList.get(0).getPassword().equals(user.getPassword())) {
            session.setAttribute("loginUser", user);
            log.info("登陆成功，用户名：" + user.getUserName());
            //防止重复提交使用重定向
            return "redirect:/hello/list";
        } else {
            map.put("msg", "用户名或密码错误");
            log.error("登陆失败");
            return "login";
        }
    }

    /**
     * 获取用户信息列表
     *
     * @param user
     * @return
     */
    @RequestMapping("/list")
    public String list(User user, Map<String, Object> map) {
        List<User> list = userService.selectUserList(user);
        map.put("name", "编程网");
        map.put("rows", list);
        return "hello";
    }
}
